package SEApp {
	import UIFree.uif_Timer;
	
	import classes.pjm_servers;
	
	import flash.events.Event;
	import flash.system.Security;
	
	import mailru.MailruCall;
	import mailru.MailruCallEvent;

	public class se_appMail extends se_app {
		private var _hash: Object;
		private var _MailruCallActive: Boolean;
		
		public static var SWFNAME: String  = 'se_app';
		
		public function se_appMail(appWidth:uint, appHeight:uint, layerCount:uint=6) {
			Security.allowDomain('http://music.appsmail.ru', 'http://content.foto.mail.ru', pjm_servers.ROOT_URL);
			Security.loadPolicyFile('http://content.foto.mail.ru/crossdomain.xml');
			Security.loadPolicyFile(pjm_servers.ROOT_URL + '/crossdomain.xml');
			
			super(appWidth, appHeight, layerCount);
		}
		
		public function get hash(): Object {
			return _hash;
		}
		
		public function get MailruCallActive(): Boolean {
			return _MailruCallActive;
		}
		
		override protected function initialize(): void {
			super.initialize();
			mailInit();
		}
		
		protected function createComponents(): void {
			
		}
		
		protected function mailInit(): void {
			MailruCall.init(SWFNAME, externalServer.secrets[externalServer.app_id]);
			MailruCall.addEventListener('app.readHash', readHash);
			MailruCall.addEventListener(Event.COMPLETE, mailruReadyHandler);
		}
		
		protected function readHash(e: MailruCallEvent=null): void {
			function doUser(e: Event): void {
				removeEventListener(se_app.UPDATEUSER, doUser);
				checkInitType();
			}
			
			MailruCall.removeEventListener('app.readHash', readHash);
			_hash = e?e.data:null;
			if (user.uid) checkInitType();
			else addEventListener(se_app.UPDATEUSER, doUser); 
		}
		
		protected function checkInitType(): void {
			if (externalServer.vars['is_app_user'] == "1") createComponents();
			else MailruCall.exec('mailru.app.users.requireInstallation', function(ie: MailruCallEvent): void {
				if (ie.data.status == 'success') createComponents();
			}, ['widget', 'notifications']);
		}
		
		protected function parseHash(a_hash: Object): Object {
			return null
		}
		
		protected function mailruReadyHandler(e: Event=null): void {
			_MailruCallActive = true;
			MailruCall.removeEventListener(Event.COMPLETE, mailruReadyHandler);
			MailruCall.exec('mailru.app.utils.hash.read', readHash);
			new uif_Timer(500, null, function(e: Event): void { // Ждем полсек. события считывания хеша, если так и небыло вызова, вызываем принудительно
				if (MailruCall.hasEventListener('app.readHash')) readHash();
			}, 1);
		}
	}
}